package com.blackhorse.order.controller;

import com.blackhorse.order.entity.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    /**
     * 参数：商品Id
     * 通过订单服务，调用商品服务根据id查询商品信息
     * 1.需要配置商品对象
     * 2.需要远程调用商品服务
     * 1)使用JDK的URLConncetion
     * 2)使用HttpClient等第三方工具
     * 3)使用Spring的RestTemplate（推荐）
     * 3.使用RestTemplate
     * getForXXX方法表示发送get请求
     * postForXXX方法表示发送post请求
     *
     * @return Product
     */
    @GetMapping("/buy/{id}")
    public Product buyProductById(@PathVariable Long id) {
        //原来：本地服务调用
//        Product product = productService.findById(id);
        //现在：如何远程调用商品服务？
        //最原始方法：使用Spring的RestTemplate，可以远程调用HTTP接口
//        String url = "http://localhost:9001/product/" + id;//硬编码
//        Product product = restTemplate.getForObject(url, Product.class);

        //consul继承ribbon，url的ip端口可写成服务名
        String url = "http://service-product/product/" + id;
        Product product = restTemplate.getForObject(url, Product.class);
        return product;
    }

}
